1. Technical Field
The present invention relates to programming models and more particularly to systems and methods for providing models that unify several data models and related execution models in common use.
2. Description of the Related Art
In modern web applications, traditional boundaries between browser-side presentation logic, server-side “business” logic, and logic for persistent data access and query are rapidly blurring. This is particularly true in so-called web mash-ups, which bring a variety of data sources and presentation components together in a browser, often using asynchronous (“AJAX”) logic. Such applications must currently be programmed using an agglomeration of data access languages, server-side programming models, and client-side scripting models meaning that programs have to entirely rewritten or significantly changed to be shifted between tiers. The large variety of languages involved also means that components do not compose well without painful amounts of scaffolding.
While the trend towards loosely-coupled inter-networked software is inexorable, programming models and runtime systems are largely designed for building monolithic, freestanding applications. While the web has vastly increased the scale of distribution, web applications are currently programmed and deployed in a manner not that different from mainframe applications of the 1960s.
The mismatch between programming models/runtimes, and the predominance of inter-networked software is becoming a significant impediment to producing and composing reliable application software in a timely manner—and this mismatch is at the heart of much of the dissatisfaction developers have expressed with the complexity and obscurity of current middleware, programming models, and development tools.